Die bisher behandelten Variablen und Konstanten sind sogenannte einfache Datentypen.
Eine weitere Datenstruktur ist das Array oder auch Feld genannt.
Was ist ein Feld? Ein Feld kann eine gewisse Anzahl an Werten, die alle vom gleichen Typ sind, enthalten.
In diesem Beispiel handelt es sich um ein Integer Feld mit der Größe 6. Jeder der 6 Feldplätze kann somit einem Integer-Wert zugeordnet werden.
Man kann die Größe eines Feldes nur ein einziges mal festlegen, danach ist diese unveränderlich gesetzt. Darum sollte man sich vor der initialisierung
Gedanken darüber machen, wie viele Werte man in dem Feld speichern können möchte.
Um ein Array zu deklarieren muss man einfach den Typ, von dem das Feld sein soll, und ein []
eckiges Klammerpaar dahinter setzen. Um es zu initialisieren
muss man das Schlüsselwort new
verwenden, denn ein Feld ist kein primitiver Typ mehr. Bei der Initialisierung muss man zudem die Feldgröße in den []
eckigen Klammern angeben.
Eine alternative Initialisierungsmethode ist, gleich Werte für die Feldplätze anzugeben. Die Feldgröße wird dann auf die Anzahl der angegebenen Werte gesetzt.
In beiden Fällen wäre die Feldgröße 6, nur, dass anderesFeld
bereits Werte auf den Feldplätzen hat.
Nun kann man sowohl lesend als auch schreibend auf die Feldelemente zugreifen. Dazu braucht es den Feldnamen mit []
eckigen Klammern mit dem Index in diesen.
Wichtig ist hierbei zu wissen, dass der erste Feldplatz den Index 0 und nicht 1 hat, man beginnt also bei 0 zu zählen.
Dies würde 57
ausgeben, da wir den Feldplatz mit dem Index 1
auf 57
gesetzt haben: meinFeld[1] = 57;
Doch was bedeutet es, dass ein Feld kein primitiver Datentyp mehr ist?
Ein primitiver Datentyp besteht einfach nur aus einem konkreten Wert, also z.B. bei einem integer eine 78
oder bei einem character ein 'y'
.
Das heißt, an seiner Adresse steht nur dieser Wert und nichts weiter.
Bei allen anderen Datentypen, wie Objekte von Klassen oder eben wie hier Felder, ist dies anders: An deren Adresse im Speicher steht nicht einfach nur ein Wert, es befindet
sich eine Referenz zu einem Wert dort (also eine weitere Adresse im Speicher).
Wenn man dieser Referenz folgt (also zu der angegebenen Adresse geht), stößt man dann entweder auf einen primitiven Datentyp oder weitere Referenzen.
Im Bild oben ist folgendes zu sehen:
Die Variable x
vom Typ int
hat bei seiner Adresse im Speicher direkt eine 45
eingetragen, da es sich bei dem integer um einen primitiven Datentyp handelt.
Als nächstes kommt ein int[]
integer Feld meinFeld
. Dieses hat erst mal keinen konkreten Wert im Speicher, sondern eine Referenz: 64783
.
Bei der Adresse 64783
sind also die konkreten Werte des Feldes angegeben, dazu müssen wir einfach der Referenz, also dem Pfeil, folgen und landen bei: 23, 54364
.
meinFeld
ist also ein Feld das zwei Stellen groß ist mit den Werten 23
und 54364
.
Doch was ist das? Weiter unten gibt es noch ein weiteres Feld zweitesFeld
, das auch auf die Adresse 64783
zeigt! Das ist der Unterschied zu primitiven Datentypen: Es
kann mehrere Variablen mit der gleichen Referenz geben. Wenn wir also einen Wert in zweitesFeld
verändern, so verändern wir diesen auch in meinFeld
gleichermaßen, da
beide Felder auf die gleiche Adresse im Speicher zeigen und damit auch auf das gleiche reale Feld zugreifen.
Hier wäre die initialisierung dieser beiden Felder im Code:
Mit zweitesFeld = meinFeld
wird nicht das Feld meinFeld
kopiert, sondern die Referenz zum eigentlichen Feld kopiert.
Damit greifen also beide Variablen auf das gleiche Feld zu.
Für die Variable wahrheitstabelle
ist es das gleiche, ein boolean[]
Feld, das auf die eigentlichen Werte mit einer Referenz verweist.
Bisher sahen unsere Felder so aus:
Doch Felder können nicht nur eine Dimension, sondern beliebig viele Dimensionen enthalten! (okay, eigentlich nur 255)
Man kann also Felder auch so aussehen lassen:
Dieses Feld hätte 2 Dimensionen. Pro Dimension kommt ein []
eckiges Klammerpaar dazu.
Frage 1
Was würde in dem Beispiel mit meinFeld
und zweitesFeld
ausgegeben werden?
Frage 2
Erstelle ein integer Feld mit der Größe 5 und platziere auf dem letzten Feldplatz eine 8
.
Frage 3
Was ist der Unterschied zwischen einem primitiven Datentyp und den anderen Typen?
Frage 4
Warum hat in dem großen Bild oben auch ein String
eine Referenz, die dann auf eine weitere Referenz zeigt?
Frage 5
Initialisiere ein 2-dimensionales double Feld (5x9) bei dem jeder Feldwert 9.3
ist. Verwende for-Schleifen.
Diese Seite entspricht noch nicht den Ansprüchen, die wir für diese Website haben.
Grund: Mehrdimensionale Arrays werden noch nicht so gut erklärt.
Falls du eine Idee hast, wie man dieses Problem beheben könnte, kontaktiere uns bitte über den Link Hilf mit!
in der grauen Footer-Leiste unten.